/**
 * 
 */
package net.sahv.bdyz.controller.admin;

import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import net.sahv.bdyz.model.Admin;
import net.sahv.bdyz.model.AdminRole;
import net.sahv.bdyz.model.Role;
import net.sahv.bdyz.service.AdminRoleService;
import net.sahv.bdyz.service.AdminService;
import net.sahv.bdyz.service.RoleService;
import net.sahv.bdyz.util.PagingUtil;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

import com.alibaba.fastjson.JSON;

/**
 * @author 张天敏
 * @date 日期：2016年8月5日 时间：下午3:05:07
 */
@Controller
@RequestMapping("admin/role")
public class RoleController {
	
	@Autowired
	public RoleService roleService;
	@Autowired
	public AdminRoleService adminRoleService;
	@Autowired
	private AdminService adminService;
	
	/**
	 * 跳转到角色列表
	 * @author 张天敏
	 * @date 日期：2016年8月5日 时间：下午3:08:54
	 * @param model
	 * @return
	 */
	@RequestMapping(value = "/roleList", method = RequestMethod.GET)
	public String roleList(Model model) {
		return "admin/role/roleList";
	}
	
	/**
	 * 角色列表
	 * @author 张天敏
	 * @see 2016年7月5日 17:54:43
	 * @param model
	 * @return
	 */
	@ResponseBody
	@RequestMapping(value="/roleList")
	public JSON roleList(PagingUtil pagingUtil,HttpServletRequest request,Model model){
		
		//获取查询参数
		String A_NAME=request.getParameter("A_NAME");
		
		String sortField=" ";
		String where="";
		
		where+=" WHERE 1=1 ";
		
		if(A_NAME!=null&&!A_NAME.trim().equals("")){
			where+=" AND a.`A_NAME` LIKE '%"+A_NAME+"%' ";
		}
		
		Map<String,Object>  param = new HashMap<String,Object>();
		
		param.put("start", pagingUtil.getiDisplayStart());
		param.put("length", pagingUtil.getiDisplayLength());
		param.put("where", where);
		param.put("sortField", sortField);
		
		List<Map<String, Object>> roleList = roleService.roleList(param);
		//统计信息的总条数
		Integer roleListCount=roleService.roleListCount(where);
		
		Map<String,Object>  map = new HashMap<String,Object>();
		map.put("aaData", roleList);
		//查出来总共有多少条记录
		map.put("iTotalRecords", roleListCount);
		map.put("iTotalDisplayRecords", roleListCount);
		map.put("sEcho", pagingUtil.getsEcho());
		 
		return (JSON) JSON.toJSON(map);
	}
	
	/**
	 * 跳转到角色分配页面
	 * @author 张天敏
	 * @date 日期：2016年8月5日 时间：下午3:32:54
	 * @return
	 */
	@RequestMapping(value="insertRole",method=RequestMethod.GET)
	public String insertRole(Model model,Integer id){
		List<Role> listAll=roleService.selectAll();
		Admin admin=adminService.selectByPrimaryKey(id);
		model.addAttribute("listAll", listAll);
		model.addAttribute("admin", admin);
		return "admin/role/insertRole";
	}
	
	/**
	 * 角色分配
	 * @author 张天敏
	 * @date 日期：2016年8月5日 时间：下午3:40:27
	 * @return
	 */
	@ResponseBody
	@RequestMapping(value="insertRole",method=RequestMethod.POST)
	public ApiResult insertRole(AdminRole adminRole){
		ApiResult result=new ApiResult();
		//统计同一个角色被分配的次数
		int count=adminRoleService.selectCountByAid(adminRole.getaId());
		if(count>=1){
			result.msg.status=2;
			result.msg.desc="该用户已分配角色！";
		}else{
			adminRole.setrCreateTime(new Date());
			int flag=adminRoleService.insert(adminRole);
			if(flag==0){
				result.msg.status=1;
				result.msg.desc="角色分配失败！";
			}else if(flag==1){
				result.msg.status=0;
				result.msg.desc="角色分配成功！";
			}
		}
		return result;
	}

}
